package com.lms.time;

import java.time.*;
import java.util.concurrent.TimeUnit;

/**
 * @Author: 李孟帅
 * @CreateTime: 2020-06-30 07:32
 * @Description:
 */
public class ClockDemo {
    public static void main(String[] args) throws InterruptedException {
        //获取使用最佳可用系统时钟返回当前即时的时钟，使用默认时区转换为日期和时间。
        Clock clock = Clock.systemDefaultZone();
        //获取使用最佳可用系统时钟返回当前即时的时钟，使用UTC时区转换为日期和时间。
        Clock clock1 = Clock.systemUTC();
        //获取当前的时钟瞬间。 2020-06-29T23:36:14.374Z  UTC时间
        Instant instant = clock.instant();
        //获取时钟的当前毫秒时间。
        long millis = clock.millis();
        //获取用于创建日期和时间的时区。Asia/Shanghai
        ZoneId zone = clock.getZone();
        //获取时钟，将时钟从指定的时钟截断返回到指定持续时间的最近出现。 例如：2020-06-29T23:49:48.031Z 取2020-06-29T23:49:45Z，即滴答间隔为5秒，
//        Clock tick = Clock.tick(clock, Duration.ofSeconds(5));
//        for (int i = 0; i < 15 ; i++) {
//            TimeUnit.MILLISECONDS.sleep(1000);//每隔1秒取样一次
//            System.out.println(clock.instant());//原始钟表打印时间戳
//            System.out.println(tick.instant()+ " tick钟表");//tickClock钟表打印时间戳
//            System.out.println("---");
//        }
//        System.out.println("-------------");
//        //滴答间隔为1秒，2020-06-29T23:54:04Z
//        Clock gmt = Clock.tickSeconds(ZoneId.of("GMT"));
//        for (int i=0;i<10;i++){
//            Thread.sleep(500); //每半秒读一次，一秒内读两次
//            System.out.println(gmt.instant());
//        }
//        //滴答间隔为一分钟
//        Clock minutes = Clock.tickMinutes(ZoneId.systemDefault());
//        for (int i=0;i<10;i++){
//            Thread.sleep(500); //每半秒读一次，一秒内读两次
//            System.out.println(minutes.instant());
//        }
        //获取使用最佳可用系统时钟返回当前时刻的时钟。
        Clock gmt1 = Clock.system(ZoneId.of("-10:00"));
        //以不同的时区返回此时钟的副本。
        Clock gmt2 = clock.withZone(ZoneId.of("America/Chicago"));
        Instant instant1 = gmt1.instant();
        ZonedDateTime zonedDateTime = instant1.atZone(ZoneId.of("+01:11"));
        System.out.println(zonedDateTime);

    }
}
